<?php

namespace app\admin\model\yxerp;

use think\Model;

/**
 * 权限模型
 */
class Permission extends Model
{
    // 表名
    protected $name = 'yxerp_permission';
    
    // 自动写入时间戳字段
    protected $autoWriteTimestamp = 'int';
    
    // 定义时间戳字段名
    protected $createTime = 'create_time';
    protected $updateTime = 'update_time';
    
    // 数据权限常量
    const DATA_SCOPE_ALL = 'all';       // 全部数据
    const DATA_SCOPE_DEPT = 'dept';     // 部门数据
    const DATA_SCOPE_POSITION = 'position'; // 岗位数据
    const DATA_SCOPE_SELF = 'self';     // 个人数据
    
    /**
     * 获取状态文本
     */
    public function getStatusTextAttr($value, $data)
    {
        $status = [0 => '禁用', 1 => '启用'];
        return isset($status[$data['status']]) ? $status[$data['status']] : '';
    }
    
    /**
     * 获取数据权限文本
     */
    public function getDataScopeTextAttr($value, $data)
    {
        $scopes = [
            self::DATA_SCOPE_ALL => '全部数据',
            self::DATA_SCOPE_DEPT => '部门数据',
            self::DATA_SCOPE_POSITION => '岗位数据',
            self::DATA_SCOPE_SELF => '个人数据'
        ];
        return isset($scopes[$data['data_scope']]) ? $scopes[$data['data_scope']] : '';
    }
    
    /**
     * 关联权限组
     */
    public function group()
    {
        return $this->belongsTo('PermissionGroup', 'group_id', 'id');
    }
    
    /**
     * 关联员工
     */
    public function employees()
    {
        return $this->belongsToMany('Employee', 'yxerp_employee_permission', 'employee_id', 'permission_id');
    }
    
    /**
     * 关联岗位
     */
    public function positions()
    {
        return $this->belongsToMany('Position', 'yxerp_position_permission', 'position_id', 'permission_id');
    }
    
    /**
     * 关联部门
     */
    public function departments()
    {
        return $this->belongsToMany('Department', 'yxerp_department_permission', 'department_id', 'permission_id');
    }
    
    /**
     * 关联管理员
     */
    public function admins()
    {
        return $this->belongsToMany('\app\admin\model\Admin', 'yxerp_admin_permission', 'admin_id', 'permission_id');
    }
} 